#pragma once

#include "common/Network.h"
#include "common/Pipeline.h"
#include "common/RouteUpdate.h"

namespace nexus {

class Atomizer {
 public:
  Atomizer(Pipeline& pipeline, Network& network);

  void run();
 private:
  void process(RouteUpdate& dpu, AtomicOverwrite& ao);
  void par(RouteUpdate& dpu, AtomicOverwrite& ao);
  void seq(RouteUpdate& dpu, AtomicOverwrite& ao);
  Pipeline& pipeline_;
  Network& network_;
};

} // namespace nexus